#include"compile_run.hpp"
#include"../comm/httplib.h"//cpp-httplib 库：轻量级 HTTP 库，Server类创建服务，Get()/Post()注册接口；

using namespace ns_compile_and_run;
using namespace httplib;

//编译服务随时可能被多个人请求，必须保证传递上来的code所形成的源文件名称要具有唯一性，不然多个用户之间会相互影响

void Usage(std::string proc)
{
    std::cerr<<"Usage: "<<"\n\t"<<proc<<" "<<"port"<<std::endl;
}

//.compile_server port
int main(int argc,char *argv[])
{
    if(argc!=2)
    {
        Usage(argv[0]);
        return 1;
    }

    // 创建HTTP服务对象（来自cpp-httplib库）
    Server svr;

    svr.Get("/hello",[](const Request &req,Response &resp){
        resp.set_content("hello httplib,你好 httplib!","text/plain;charset=utf-8");
    });

     svr.Post("/compile_and_run",[](const Request &req,Response &resp){
         //用户请求的服务正文是我们想要的json string
         std::string in_json=req.body;
         std::string out_json;
         if(!in_json.empty())
         {
             CompileAndRun::Start(in_json,&out_json);
             resp.set_content(out_json,"application/json;charset=utf-8");
         }
     });
    //svr.set_base_dir("./wwwroot");
    // 启动HTTP服务：监听0.0.0.0（所有网卡）的argv[1]端口（
    svr.listen("0.0.0.0",atoi(argv[1]));

    return 0;























    // //in_json:{"code":"#include..","input":"", "cpu_limit":"1", "mem_limit":"10240*3"}
    // //out_json:{"status":"0,1,2..", "reason":" ", "stdout":" ", "stderr":" "}
    // //通过http让client上传一个json string

    // //充当客户端请求的json串
    // std::string in_json;
    // Json::Value in_value;
    // //R"()",raw string
    // in_value["code"]=R"(#include<iostream>
    // int main()
    // {
    //     std::cout<<"hello world"<<std::endl;
    //     return 0;
    // })";
    // in_value["input"]="";
    // in_value["cpu_limit"]=1;
    // in_value["mem_limit"]=10240*3;
    // Json::FastWriter writer;
    // in_json=writer.write(in_value);

    // //将来给客户端返回的json串
    // std::string out_json;
    // CompileAndRun::Start(in_json,&out_json);
    // std::cout<<out_json<<std::endl;
    // return 0;
}
